'''

Given two sorted arrays nums1 and nums2 of size m and n respectively, return the median of the two sorted arrays.

Follow up: The overall run time complexity should be O(log (m+n)).

 

Example 1:

Input: nums1 = [1,3], nums2 = [2]
Output: 2.00000
Explanation: merged array = [1,2,3] and median is 2.
Example 2:

Input: nums1 = [1,2], nums2 = [3,4]
Output: 2.50000
Explanation: merged array = [1,2,3,4] and median is (2 + 3) / 2 = 2.5.
Example 3:

Input: nums1 = [0,0], nums2 = [0,0]
Output: 0.00000
Example 4:

Input: nums1 = [], nums2 = [1]
Output: 1.00000
Example 5:

Input: nums1 = [2], nums2 = []
Output: 2.00000
 

Constraints:

nums1.length == m
nums2.length == n
0 <= m <= 1000
0 <= n <= 1000
1 <= m + n <= 2000
-106 <= nums1[i], nums2[i] <= 106
'''

class Solution:
    def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) -> float:
        
        
        #1. 合并两个数组成一个升序的数组
        nums3=[]
        #nums1和nums2都没有
        if len(nums1)==0 and len(nums2)==0:
            return float(0)
        
        #nums1有和nums2没有
        elif len(nums1)>0 and len(nums2)==0:
            for i in nums1:
                nums3.append(i)
        
        #nums1没有和nums2有
        elif len(nums1)==0 and len(nums2)>0:
            for i in nums2:
                nums3.append(i)
        
        #nums1和nums2都有元素
        elif len(nums1)>0 and len(nums2)>0:
            i=0
            j=0
            while(i<len(nums1)):
                if(j<len(nums2)):
                    #nums2还有
                    if nums1[i]<nums2[j]:
                        nums3.append(nums1[i])
                        i = i+1
                    else:

                        nums3.append(nums2[j])
                        j = j+1
                else:
                    #num2已经没有元素
                    nums3.append(nums1[i])
                    i = i+1
            
            
            while(j<len(nums2)):
                nums3.append(nums2[j])
                j = j+1
        
        
        mid  = int(len(nums3)/2)
        #2. 取出中间值
        if len(nums3)%2==0:
            #偶数个元素
            return  float((nums3[mid]+nums3[mid-1])/2)
        else:
            #奇数个元素
            return float(nums3[mid])
            
                